//////////////////////////////////////////////////////////////////////
//
//	Copyright 2010-2011 Rogo's Team. All Rights Reserved
//
//////////////////////////////////////////////////////////////////////
package com.rogo.mvc.interfaces
{
	public interface IFacade extends INotifier
	{
		// proxy
		function registerProxy(proxy:IProxy):void;
		function retrieveProxy(proxyName:String):IProxy;
		function removeProxy(proxyName:String):IProxy;
		function hasProxy(proxyName:String):Boolean;
		
		// command	
		function registerCommand(notificationName:String, commandClassRef:Class):void;
		function removeCommand(notificationName:String):void;
		function hasCommand(notificationName:String):Boolean;
		
		// mediator
		function registerMediator(mediator:IMediator):void;
		function removeMediator(mediatorName:String):void;
		function hasMediator(mediatorName:String):Boolean;
		
		// notify
		function notifyObservers(notification:INotification):void;
	}
}